package com.itheima.mapper;

import com.github.pagehelper.Page;
import com.itheima.common.entity.QueryPageBean;
import com.itheima.pojo.dto.CheckGroupDTO;
import com.itheima.pojo.vo.CheckGroupVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface CheckGroupMapper {

	/**
	 * 新增检查组
	 *
	 * @param checkGroupDTO
	 */
	@Insert("insert into t_checkgroup(code,name,helpCode,sex,remark,attention) " +
			"values(#{code},#{name},#{helpCode},#{sex},#{remark},#{attention})")
	void insertGroup(CheckGroupDTO checkGroupDTO);

	/**
	 * 在新增检查组的同时也要新增检查组和检查项的关联关系
	 *
	 * @param groupId
	 * @param id
	 */
	@Insert("insert into t_checkgroup_checkitem(checkgroup_id,checkitem_id) values(#{groupId},#{id})")
	void insertAssociation(Integer groupId, String id);

	/**
	 * 查询检查组是否存在关联的套餐
	 *
	 * @param checkGroupId
	 * @return
	 */
	@Select("select sc.setmeal_id from t_setmeal_checkgroup sc where checkgroup_id = #{checkGroupId}")
	List<Long> getSetmealByGroupId(String checkGroupId);

	/**
	 * 删除检查项和检查组的关联关系
	 *
	 * @param checkGroupId
	 */
	@Delete("delete from t_checkgroup_checkitem where checkgroup_id=#{checkGroupId}")
	void deleteAssociation(String checkGroupId);

	/**
	 * 根据检查组id删除检查组
	 *
	 * @param checkGroupId
	 */
	@Delete("delete from t_checkgroup where id=#{checkGroupId}")
	void delete(String checkGroupId);

	/**
	 * 更新检查组
	 *
	 * @param checkGroupDTO
	 */
	void updateGroup(CheckGroupDTO checkGroupDTO);

	/**
	 * 条件分页查询检查组
	 *
	 * @param checkGroupDTO
	 * @return
	 */
	Page<CheckGroupDTO> getPage(QueryPageBean checkGroupDTO);

	/**
	 * 根据检查组id查询检查组
	 *
	 * @param checkGroupId
	 * @return
	 */
	@Select("select * from t_checkgroup where id=#{checkGroupId}")
	CheckGroupDTO findById(String checkGroupId);

	/**
	 * 查询所有检查组
	 *
	 * @return
	 */
	@Select("select * from t_checkgroup")
	List<CheckGroupVO> findAll();

	/**
	 * 根据套餐id查询检查组id
	 *
	 * @param setmealId
	 * @return
	 */
//	@Select("select checkgroup_id from t_setmeal_checkgroup where setmeal_id=#{setmealId}")
	List<Integer> findCheckGroupIdsBySetmealId(Integer setmealId);
}
